#include<iostream>
using namespace std;
//int main()
//{
//	int* ptr1 = new int;
//	int* ptr2 = new int(1);
//	int* ptr3 = new int[10]{ 1,2,3,4,5 };
//
//	delete ptr1;
//	delete ptr2;
//	delete[] ptr3;
//
//	return 0;
//}
//class A
//{
//public:
//	A()
//	{
//		cout << "A()" << endl;
//	}
//	~A()
//	{
//		cout << "~A()" << endl;
//	}
//private:
//	int _a;
//};
//int main()
//{
//	A* ptr = new A;
//	delete ptr;
//
//	return 0;
//}
//class A
//{
//public:
//	A(int i = 0)
//		:_a(i)
//	{
//		cout << "A()" << this << endl;
//	}
//	void print()
//	{
//		cout << _a << endl;
//	}
//	~A()
//	{
//		cout << "~A()" << this << endl;
//	}
////private:
//	int _a;
//};
//int main()
//{
//	A* p1 = new A[10]{A(1),A(2),A()};
//	A* p2 = new A[10]{ 1,2,3 };
//	delete (p1-1);
//	new(p1)A(4);
//	p1->~A();
//	return 0;
//}
template<class T>
//void Swap(T& x, T& y)
//{
//	T tmpe = x;
//	x = y;
//	y = tmpe;
//}
T Add(T x, T y)
{
	return x + y;
}
int main()
{
	int j = 1; int z = 0;
	double x = 10, y = 20;
	/*Swap(j ,z);
	Swap(x, y);*/
	//cout << j << " " << z << endl;
	//cout << x << " " << y << endl;
	int num = Add((int)1.1, 1);
	cout << num << endl;
	Add<double>(1.1, 2);
	return 0;
}
